package com.auction.service;

import com.auction.pojo.Payment;
import com.github.pagehelper.PageInfo;

import java.math.BigDecimal;

/**
 * 支付服务接口
 */
public interface PaymentService {

    /**
     * 根据ID获取支付信息
     * 
     * @param id 支付ID
     * @return 支付信息
     */
    Payment getById(Long id);

    /**
     * 根据订单ID获取支付信息
     * 
     * @param orderId 订单ID
     * @return 支付信息
     */
    Payment getByOrderId(Long orderId);

    /**
     * 分页查询支付信息
     * 
     * @param pageNum       页码
     * @param pageSize      每页记录数
     * @param userId        用户ID（可选）
     * @param paymentStatus 支付状态（可选）
     * @return 支付信息分页结果
     */
    PageInfo<Payment> page(int pageNum, int pageSize, Long userId, Integer paymentStatus);

    /**
     * 创建支付记录
     * 
     * @param payment 支付信息
     * @return 创建结果
     */
    boolean create(Payment payment);

    /**
     * 更新支付记录
     * 
     * @param payment 支付信息
     * @return 更新结果
     */
    boolean update(Payment payment);

    /**
     * 确认支付
     * 
     * @param id 支付ID
     * @return 确认结果
     */
    boolean confirmPayment(Long id);

    /**
     * 取消支付
     * 
     * @param id 支付ID
     * @return 取消结果
     */
    boolean cancelPayment(Long id);

    void create(Long id, Long userId, BigDecimal orderAmount);

    void payCallback(Long orderId, String paymentMethod);
}